package br.com.cfccultura.admin.model.vo;

import br.com.cfccultura.admin.model.enums.TipoCurso;

public class OrdemServicoItem extends ValueObject {
	
	private static final long serialVersionUID = 5540991253223412057L;
	
	private Integer codigo;
	private OrdemServico ordemServico;
	private Servico servico;
	private Matricula matricula;
	private AgendamentoProva agendamentoProva;
	private Integer qtde;
	private Double valorVenda;
	private Double valorCusto;
	private TipoCurso tipoCurso;
	
	public OrdemServicoItem() {}
	public OrdemServicoItem(Integer codigo) {
		this.codigo = codigo;
	}
	public OrdemServicoItem(Integer codigo, OrdemServico ordemServico) {
		this(codigo);
		this.ordemServico = ordemServico;
	}
	
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public OrdemServico getOrdemServico() {
		return ordemServico;
	}
	public void setOrdemServico(OrdemServico ordemServico) {
		this.ordemServico = ordemServico;
	}
	public Servico getServico() {
		return servico;
	}
	public void setServico(Servico servico) {
		this.servico = servico;
	}
	public Matricula getMatricula() {
		return matricula;
	}
	public void setMatricula(Matricula matricula) {
		this.matricula = matricula;
	}
	public AgendamentoProva getAgendamentoProva() {
		return agendamentoProva;
	}
	public void setAgendamentoProva(AgendamentoProva agendamentoProva) {
		this.agendamentoProva = agendamentoProva;
	}
	public Integer getQtde() {
		return qtde;
	}
	public void setQtde(Integer qtde) {
		this.qtde = qtde;
	}
	public Double getValorVenda() {
		return valorVenda;
	}
	public void setValorVenda(Double valorVenda) {
		this.valorVenda = valorVenda;
	}
	public Double getTotal() {
		return getQtde() * getValorVenda();
	}
	public Double getValorCusto() {
		return valorCusto;
	}
	public void setValorCusto(Double valorCusto) {
		this.valorCusto = valorCusto;
	}
	public TipoCurso getTipoCurso() {
		return tipoCurso;
	}
	public void setTipoCurso(TipoCurso tipoCurso) {
		this.tipoCurso = tipoCurso;
	}
	public String getDescricao() {
		if(getMatricula() != null) {
			return getMatricula().getTurma().getCurso().getNome() + " (curso)";
		} else if(getAgendamentoProva() != null) {
			return getAgendamentoProva().getCurso().getNome() + " (prova)";
		} else if(getServico() != null) {
			return getServico().getDescricao();
		}
		throw new RuntimeException("Descricao não especificada !");
	}

}
